数字 PID 控制器

Discrete-time PID Controller 离散 PID 控制器

模拟式PID控制器的离散化,得到数字控制器

一、数字 PID 算法

已知连续时间的 PID 控制,拉普拉斯变换得到:

u(t)=Kp[e(t)+1Ti∫0te(τ)dτ+Tdde(t)dt]⇔D(s)=U(s)E(s)=Kp(1+1Tis+Tds){u(t)≈u(k)e(t)≈e(k)∫0te(τ)dτ≈∑j=0ke(j)Tde(t)dt≈e(k)−e(k−1)T

1. 位置式 PID 算法

u(k)=Kpe(k)+Ki∑j=0ke(j)+Kd[e(k)−e(k−1)]

2. 增量式 PID 算法

Δu=u(k)−u(k−1)=Kp[e(k)−e(k−1)]+Kie(k)+Kd[e(k)−2e(k−1)+e(k−2)]=(Kp+Ki+Kd)e(k)−(Kp+2Kd)e(k−1)+Kde(k−2)

3. 一般 PID 算法的离散化

一般常用模拟控制器离散化#二、差分变换法 ,用后向差分,或双线性差分,并写为控制器的形式

二、改进的数字 PID 算法

改进PID.png

1. 积分分离算法

在系统误差较大时,取消积分作用;当误差减小到一定值时,再重新积分。e0 为积分分离阈值

|e(k)|≤e0 采用 PID 控制,保证稳态误差为 0
|e(k)|>e0 采用 PD 控制,大幅度减小超调量

u(k)=Kp[e(k)+TTi∑i=0ke(i)+TdT(e(k)−e(k−1))]∑i=0ke(i)={∑i=0ke(i)|e(k)|≤e0∑i=0k−1e(i)|e(k)|>e0

2. 抗饱和积分算法

输出限幅,输出超限时不积分

∑i=0ke(i)={∑i=0ke(i)umin≤u(k)≤umax∑i=0k−1e(i)umin>u(k)oru(k)>umax

3. 遇限削弱算法

∑i=0ke(i)={∑i=0ke(i){|u(k)|≤u0u(k)>u0ande(k)<0u(k)<u0ande(k)>0∑i=0k−1e(i){u(k)>u0ande(k)>0u(k)<u0ande(k)<0

4. 不完全微分

纯微分环节对噪声很敏感,可以串接一个惯性环节来抑制高频影响

Gf=1Tfs+1=U(s)U1(s)⇒Tfdu(t)dt+u(t)=u1(t)⇒Tfu(k)−u(k−1)T+u(k)=u1(k)u(k)=TfTf+Tu(k−1)+TTf+Tu1(k)

5. 微分先行

微分先行.png

6. 带死区的 PID

∑i=0ke(i)={∑i=0ke(i)|e(k)|>e0∑i=0k−1e(i)|e(k)|≤e0